package com.project.domain.entity.xjProject;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("项目立项--校级项目基础信息")
public class BizXjProject {

    private static final long serialVersionUID = 1L;

    /** id */
//    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /** 项目编号 */
    @Excel(name = "项目编号")
    @ApiModelProperty("项目编号")
    private String code;

    /** 项目名称 */
    @Excel(name = "项目名称")
    @ApiModelProperty("项目名称")
    private String name;

    /** 所属单位id */
    @Excel(name = "所属单位id")
    @ApiModelProperty("所属单位id")
    private String unitId;

    /** 所属院系 */
    @Excel(name = "所属院系")
    @ApiModelProperty("所属院系")
    private String divisionId;

    /** 项目级别 */
    @Excel(name = "项目级别")
    @ApiModelProperty("项目级别")
    private String projectLevelId;

    /** 保密级别 */
    @Excel(name = "保密级别")
    @ApiModelProperty("保密级别")
    private String secretLevelId;

    /** 立项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "立项日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("立项日期")
    private String authorizeDate;

    /** 开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("开始日期")
    private String beginDate;

    /** 计划结项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划结项日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("计划结项日期")
    private String planEndDate;

    /** 实际结项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际结项日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("实际结项日期")
    private String actualEndDate;

    /** 项目状态 */
    @Excel(name = "项目状态")
    @ApiModelProperty("项目状态")
    private String projectStatusId;

    /** 批准号 */
    @Excel(name = "批准号")
    @ApiModelProperty("批准号")
    private String authorizeCode;

    /** 成果形式 */
    @Excel(name = "成果形式")
    @ApiModelProperty("成果形式")
    private String productMode;

    /** 项目来源单位 */
    @Excel(name = "项目来源单位")
    @ApiModelProperty("项目来源单位")
    private String projectTier;

    /** 负责人类型 */
    @Excel(name = "负责人类型")
    @ApiModelProperty("负责人类型")
    private String chargerType;

    /** 负责人id（取biz_person中id） */
    @Excel(name = "负责人id", readConverterExp = "取=biz_person中id")
    @ApiModelProperty("负责人id")
    private String chargerCode;

    /** 负责人姓名 */
    @Excel(name = "负责人姓名")
    @ApiModelProperty("负责人姓名")
    private String chargerName;

    /** 项目分类 */
    @Excel(name = "项目分类")
    @ApiModelProperty("项目分类")
    private String projectTypeCode;

    /** 主课题编号 */
    @Excel(name = "主课题编号")
    @ApiModelProperty("主课题编号")
    private String upProjectId;

    /** 主课题名称 */
    @Excel(name = "主课题名称")
    @ApiModelProperty("主课题名称")
    private String upProjectName;

    /** 承担单位排名 */
    @Excel(name = "承担单位排名")
    @ApiModelProperty("承担单位排名")
    private String bearUnitOrder;

    /** 批准经费（万元） */
    @Excel(name = "批准经费", readConverterExp = "万元")
    @ApiModelProperty("批准经费")
    private String feeAuthorize;

    /** 配套经费 */
    @Excel(name = "配套经费")
    @ApiModelProperty("配套经费")
    private String attachFee;

    /** 外拨经费 */
    @Excel(name = "外拨经费")
    @ApiModelProperty("外拨经费")
    private String outFee;

    /** 经费卡号 */
    @Excel(name = "经费卡号")
    @ApiModelProperty("经费卡号")
    private String feeCode;

    /** 统计归属 */
    @Excel(name = "统计归属")
    @ApiModelProperty("统计归属")
    private String subjectClassId;

    /** 一级学科id */
    @Excel(name = "一级学科id")
    @ApiModelProperty("一级学科id")
    private String subjectId;

    /** 研究类别 */
    @Excel(name = "研究类别")
    @ApiModelProperty("研究类别")
    private String researchClassId;

    /** 国民经济行业id */
    @Excel(name = "国民经济行业id")
    @ApiModelProperty("国民经济行业id")
    private String gmjjhy;

    /** 合作单位id */
    @Excel(name = "合作单位id")
    @ApiModelProperty("合作单位id")
    private String cooperateId;

    /** 组织形式 */
    @Excel(name = "组织形式")
    @ApiModelProperty("组织形式")
    private String formId;

    /** 项目来源id */
    @Excel(name = "项目来源id")
    @ApiModelProperty("项目来源id")
    private String projectSourceId;

    /** 课题类型 */
    @Excel(name = "课题类型")
    @ApiModelProperty("课题类型")
    private String levelType;

    /** 自筹经费 */
    @Excel(name = "自筹经费")
    @ApiModelProperty("自筹经费")
    private String selfProvideFee;

    /** 备注 */
    @Excel(name = "备注")
    @ApiModelProperty("备注")
    private String note;

    /** 备用字段1 */
    @Excel(name = "备用字段1")
    @ApiModelProperty("备用字段1")
    private String standby1;

    /** 备用字段2 */
    @Excel(name = "备用字段2")
    @ApiModelProperty("备用字段2")
    private String standby2;

    /** 备用字段3 */
    @Excel(name = "备用字段3")
    @ApiModelProperty("备用字段3")
    private String standby3;

    /** 备用字段4 */
    @Excel(name = "备用字段4")
    @ApiModelProperty("备用字段4")
    private String standby4;

    /** 备用字段5 */
    @Excel(name = "备用字段5")
    @ApiModelProperty("备用字段5")
    private String standby5;

    /** 备用字段6 */
    @Excel(name = "备用字段6")
    @ApiModelProperty("备用字段6")
    private String standby6;

    /** 备用字段7 */
    @Excel(name = "备用字段7")
    @ApiModelProperty("备用字段7")
    private String standby7;

    /** 备用字段8 */
    @Excel(name = "备用字段8")
    @ApiModelProperty("备用字段8")
    private String standby8;

    /** 备用字段9 */
    @Excel(name = "备用字段9")
    @ApiModelProperty("备用字段9")
    private String standby9;

    /** 备用字段10 */
    @Excel(name = "备用字段10")
    @ApiModelProperty("备用字段10")
    private String standby10;

    /** 创建人id */
    @TableField(fill = FieldFill.INSERT,value="CREATEUSERID")
    @ApiModelProperty("创建人id")
    @Excel(name = "创建人id")
    private String createuserid;

    /** 创建人姓名 */
    @TableField(fill = FieldFill.INSERT,value="CREATEUSERNAME")
    @ApiModelProperty("创建人姓名")
    @Excel(name = "创建人姓名")
    private String createusername;

    /** 创建时间 */
    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建日期")
    private Date createdate;

    /** 最后编辑人id */
    @TableField(fill = FieldFill.UPDATE,value="LASTEDITUSERID")
    @Excel(name = "最后编辑人id")
    @ApiModelProperty("最后编辑人id")
    private String lastedituserid;

    /** 最后编辑人姓名 */
    @TableField(fill = FieldFill.UPDATE,value="LASTEDITUSERNAME")
    @Excel(name = "最后编辑人姓名")
    @ApiModelProperty("最后编辑人姓名")
    private String lasteditusername;

    /** 最后编辑时间 */
    @TableField(fill = FieldFill.UPDATE,value="LASTEDITDATE")
    @Excel(name = "最后编辑时间", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("最后编辑时间")
    private Date lasteditdate;

    /** 审核时间 */
    @Excel(name = "审核时间")
    @ApiModelProperty("审核时间")
    private String checkdate;

    /** 审核人 */
    @Excel(name = "审核人")
    @ApiModelProperty("审核人")
    private String checker;

    /** 审核状态 */
    @Excel(name = "审核状态")
    @ApiModelProperty("审核状态")
    private String checkstatus;

    /** 主项目分类编号 */
    @Excel(name = "主项目分类编号")
    @ApiModelProperty("主项目分类编号")
    private String mainProjectTypeCode;

    /** 被委托人编号 */
    @Excel(name = "被委托人编号")
    @ApiModelProperty("被委托人编号")
    private String mandatarycode;

    /** 被委托人姓名 */
    @Excel(name = "被委托人姓名")
    @ApiModelProperty("被委托人姓名")
    private String mandataryname;

    /** 委托开始日期 */
    @Excel(name = "委托开始日期")
    @ApiModelProperty("委托开始日期")
    private Date mandatarybegindate;

    /** 委托结束日期 */
    @Excel(name = "委托结束日期")
    @ApiModelProperty("委托结束日期")
    private Date mandataryenddate;

    /** 行政职务 */
    @Excel(name = "行政职务")
    @ApiModelProperty("行政职务")
    private String executivepost;

    /** 所在研究基地类型 */
    @Excel(name = "所在研究基地类型")
    @ApiModelProperty("所在研究基地类型")
    private String researchbasetype;

    /** 所在研究基地名称 */
    @Excel(name = "所在研究基地名称")
    @ApiModelProperty("所在研究基地名称")
    private String researchbase;

    /** 科技活动类型 */
    @Excel(name = "科技活动类型")
    @ApiModelProperty("科技活动类型")
    private String technologyactivitytype;

    /** 国民行业代码 */
    @Excel(name = "国民行业代码")
    @ApiModelProperty("国民行业代码")
    private String nationalindustrycode;

    /** 出生年月 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生年月", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("出生年月")
    private String birthday;

    /** 项目摘要 */
    @Excel(name = "项目摘要")
    @ApiModelProperty("项目摘要")
    private String projectsummary;

    /** 关键词 */
    @Excel(name = "关键词")
    @ApiModelProperty("关键词")
    private String keyword;

    /** 项目成员id（英文逗号分隔） */
    @Excel(name = "项目成员id", readConverterExp = "英=文逗号分隔")
    @ApiModelProperty("项目成员id")
    private String authorpids;

    /** 项目成员工作单位id（英文逗号分隔） */
    @Excel(name = "项目成员工作单位id", readConverterExp = "英=文逗号分隔")
    @ApiModelProperty("项目成员工作单位id")
    private String authorunitids;

    /** 数据完善状态 */
    @Excel(name = "数据完善状态")
    @ApiModelProperty("数据完善状态")
    private String completedatastatus;

    /** 社会经济服务目标 */
    @Excel(name = "社会经济服务目标")
    @ApiModelProperty("社会经济服务目标")
    private String societyTarget;

    /** 预算标准id */
    @Excel(name = "预算标准id")
    @ApiModelProperty("预算标准id")
    private String budgetStandardId;

    /** 负责人电话 */
    @Excel(name = "负责人电话")
    @ApiModelProperty("负责人电话")
    private String chargerPhone;

    /** 负责人邮箱 */
    @Excel(name = "负责人邮箱")
    @ApiModelProperty("负责人邮箱")
    private String chargerEmail;

    /** 经办人 */
    @Excel(name = "经办人")
    @ApiModelProperty("经办人")
    private String transactor;

    /** 经办人电话 */
    @Excel(name = "经办人电话")
    @ApiModelProperty("经办人电话")
    private String transactorPhone;

    /** 流程id */
    @ApiModelProperty("流程id")
    private String processInstanceId;

    /** 提交类型 */
    @ApiModelProperty("提交类型 -> -3:科研人员最后一页提交，-2:管理员最后一页审核通过，-1:暂存,1:提交,2:保存并通过")
    @TableField(exist = false)
    private Integer submitType;

    /** 流程节点id */
    @ApiModelProperty("流程节点id")
    @TableField(exist = false)
    private String taskId;

    /** 是否当前审批人 */
    @TableField(exist = false)
    private Boolean isAuditor;

}
